var api = require('../config/api.js');

// 时间格式化
function formatTime(date) {
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}


/**
 * 封装request请求
 */
/**
 * GET
 */
function appGet(url, data = {}, method = 'GET') {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: data,
      method: method,
      header: {
        'Content-Type': 'application/json',
        'Authorization': wx.getStorageSync('token')
      },
      success: res => {
        if (res.statusCode == 200) {
          if (res.data.code == 401) {
            wx.navigateTo({
              url: '/pages/auth/auth_login/auth_login',
            })
          } else {
            resolve(res.data);
          }
        } else {
          reject(res.errMsg)
        }
      },
      fail: function (err) {
        reject(err)
      }
    })
  })
}


/**
* 封装微信的的request
*/
function request(url, data = {}, method = "POST", header = "application/json") {
  // let baseurl = 'https://xlqd.co96.com/';
  return new Promise(function (resolve, reject) {
    wx.request({
      url: url,
      data: data,
      method: method,
      header: {
        'Content-Type': header,
        'Authorization': 'Bearer ' + wx.getStorageSync('token')
      },
      success: function (res) {
        // wx.hideLoading();
        console.log(res);
        if (res.data.code == 0) {
          if (res.data.code == 401) {
            wx.navigateTo({
              url: '/pages/auth/auth_login/auth_login',
            })
          } else {
            resolve(res.data);
          }
        } else {
          console.log(res);
          reject(res.errMsg);
        }

      },
      fail: function (err) {
        console.log(err);
        reject(err)
      }
    })
  });
}

/**
* 检查微信会话是否过期
*/
function checkSession() {
  return new Promise(function (resolve, reject) {
    wx.checkSession({
      success: function () {
        resolve(true);
      },
      fail: function () {
        reject(false);
      }
    })
  });
}

/**
* 调用微信登录
*/
function login() {
  return new Promise(function (resolve, reject) {
    wx.login({
      success: function (res) {
        if (res.code) {
          resolve(res);
        } else {
          reject(res);
        }
      },
      fail: function (err) {
        reject(err);
      }
    });
  });
}

function redirect(url) {
  //判断页面是否需要登录
  if (false) {
    wx.redirectTo({
      url: '/pages/login/login'
    });
    return false;
  } else {
    wx.redirectTo({
      url: url
    });
  }
}

function showErrorToast(msg) {
  wx.showToast({
    title: msg,
    image: '/static/images/icon_error.png'
  })
}

function showSuccessToast(msg) {
  wx.showToast({
    title: msg,
  })
}


function isPhone(phone) {
  phone = phone.trim();
  return true
}

function isCode(code) {
  return /^\d{6}$/.test(code)
}

function getUserInfo(callback) {
  callback = callback || function () { }
  wx.getStorage({
    key: 'userinfo',
    success: res => {
      callback(res)
    },
    fail: err => {
      callback(null)
    }
  })
}

function setUserInfo(info) {
  wx.setStorage({
    key: 'userinfo',
    data: info,
  })
}

function getWorkStaDate(str) {
  let year = str.slice(0, 4);
  let month = str.slice(5, 10);
  return { year, month }
}

function formatTime(date) {
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

function formatNumber(num, len) {
  len = len || 2;
  num = num + '';
  return num.length < len ? '0'.repeat(len - num.length) + num : num;
}

function verifyIdCard(idCard) {
  var ts = this;
  var code = idCard
  //身份证号合法性验证 
  //支持15位和18位身份证号
  //支持地址编码、出生日期、校验位验证
  var city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 " };
  var tip = "";
  var pass = true;
  var reg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/;
  if (!code || !code.match(reg)) {
    tip = "身份证号格式错误";
    pass = false;
  } else if (!city[code.substr(0, 2)]) {
    tip = "地址编码错误";
    pass = false;
  } else {
    //18位身份证需要验证最后一位校验位
    if (code.length == 18) {
      code = code.split('');
      //∑(ai×Wi)(mod 11)
      //加权因子
      var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
      //校验位
      var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
      var sum = 0;
      var ai = 0;
      var wi = 0;
      for (var i = 0; i < 17; i++) {
        ai = code[i];
        wi = factor[i];
        sum += ai * wi;
      }
      var last = parity[sum % 11];
      if (parity[sum % 11] != code[17]) {
        tip = "校验位错误";
        pass = false;
      }
    }
  }
  console.log(pass)
  // if (pass) { ts.setData({ allow_id: true }); wx.setStorageSync("idcard", code) }
  // if (!pass) console.log("tip" + tip);
  return pass;
}


function verifyEmpty(event, name) {
  if (event == '') {
    wx.showToast({
      title: name + '不能为空',
      icon: 'none',
      duration: 1500
    })
    return true
  }
}
function limit(event, name) {
  if (event == 8) {
    wx.showToast({
      title: name + '文字过长',
      icon: 'none',
      duration: 1500
    })
    return true
  }
}

function isValidPhone(e) {
  var isPhone = /^([0-9]{3,4})?[0-9]{7,8}$/;
  var isMob = /^1[345789][0-9]{9}$/;
  // var isMob = /^[1][3,4,5,7,8,9][0-9]{9}$/;

  if (isPhone.test(e) || isMob.test(e)) {
    return true;
  } else {
    return false;
  }
}

module.exports = {
  formatTime,
  formatNumber,
  request,
  appGet,
  redirect,
  showErrorToast,
  showSuccessToast,
  checkSession,
  login,


  isPhone,
  isCode,
  getUserInfo,
  setUserInfo,
  getWorkStaDate,

  verifyIdCard,
  verifyEmpty,
  limit,
  isValidPhone,
}
